更新时间:2024-05-30 17:45
ATI Stream Technology,中文译作ATI流处理技术,是AMD针对旗下图形处理器(GPU)所推出的通用并行计算技术。
利用这种技术可以充分发挥AMD GPU的并行运算能力,用于对软件进行加速或进行大型的科学运算,同时用以对抗竞争对手的nVIDIA CUDA技术。与CUDA技术是基于自身的私有标准不同,ATI Stream技术基于开放性的OpenCL标准。
2010年10月,随着AMD Radeon HD6800系列显卡发布,ATI品牌正式被AMD品牌取代。相应的,ATI Stream技术也升级更名为AMD APP技术。
GPU通用计算技术,简单的说就是让GPU(显卡核心)处理图形数据之外的其他数据。 在过去的几年里,GPU一直以每年或每半年更新一代的速度发展,其发展速度已远把CPU抛在后面。随着DirectX 10规范的出现,GPU开始采用统一渲染架构,其性能与功能也变得更为强大,它能做的事情已不单只是运行3D游戏,不少科学计算领域已开始利用GPU的优势进行计算。ATI最先提出通用计算的概念,与斯坦福大学合作,在Folding@Home研究项目中利用ATI Radeon X1900作运算加速。通过GPU来模拟蛋白质合成,进而找寻有关蛋白质的疾病。自ATI R520 GPU问世以来,基于它的可编程架构,ATI投入大量资源研究通用计算,也就是说用GPU处理非图形数据,处理一般在主流服务器和桌面处理器上运行的软件,性能比CPU高出10-30倍。
CPU采用的是串行架构,执行的是串行指令,虽然多核CPU在并行计算方面有所增强,但还是远比不上采用并行架构的GPU。最高端的CPU只拥有6核心12线程,其并行计算能力远不如GPU。GPU更适合并行计算。
由于CPU与GPU在架构完全不同,软件要在GPU上运行,就必须通过特定的环境或接口。为此,NVIDIA方面发布了CUDA技术,并放出了相应的开发包,程序员通过这个接口进行软件开发,软件就能在GeForce 8系列及其以上的显卡上运行。作为NVIDIA显卡市场上最大的竞争对手,AMD方面当然不甘落后,在08年12月发布了ATI Stream流处理技术回应NVIDIA的CUDA。这样,NVIDIA与AMD-ATI的竞争便从3D性能扩展到GPU并行计算上了。
ATI Stream技术是一套完整的硬件和软件解决方案,这个概念最初在2005年依据R580核心的流处理加速卡提出。随后ATI被AMD收购,异构计算概念被越来越多的提及,Stream技术被定义为能够使AMD图形处理器(GPU)与系统的CPU协同工作,加速处理图形和视频以及其他大量应用。该技术使更加平衡的平台能够以前所未有的速度运行要求苛刻的计算任务,为最终用户提供更出色的应用体验。
AMD-ATI的ATI Stream流处理技术可使Radeon HD系列显卡发挥出其强大的并行计算能力。AMD的高端显卡Radeon HD5970拥有3200个流处理器,可以简单理解成拥有3200个核心,通过ATI Stream便可发挥这3200个核心的计算能力。
相比于CUDA基于nVIDIA自身的封闭架构不同,ATI stream技术是基于开放标准的,因为几乎所有曾经存在的私有标准都消亡了。还活着的私有标准几乎只剩下Nvidia的CUDA了,而同样是Nvidia的标准,其早先的Cg已经看不见身影。相对的,开放性标准中,DirectX、OpenGL都是为我们所熟知的,而DVI、CDP、JEDEC也都还确实存在着。ATI企业级计算的产品专家Ed Buckingham表示,他们认为未来的标准将必然倾向于开放式,而其中最有前途的就是OpenCL和DirectX。因此ATI stream技术自从其诞生之日便是基于OpenCL和Directcompute这些开放标准。
CUDA的优势在于给程序员提供了一个类似C语言的编程环境,使应用人员可以很容易的对GPU编写程序。ATI Stream也提供了类似的工具,叫做Brook+。程序员只需要像以往一样编程,通过调用接口程序,即可调用GPU进行大规模运算
Brook+是AMD出的显卡编程语言,它和NVIDIA提出的CUDA C是对应的。只不过CUDA的基础是C和C++,而brook+是汇编。brook+环境下写程序不是那么容易的,毕竟它属于低级语言,但是那是程序员和推广的问题,一旦写出来了效率通常都很高的。所以说汇编是底层语言,效率很高但是兼容性和简易型较差。
无论是NIVIDA还是AMD,都意识到GPU强大的运算能力并不只在3D游戏领域,在其他需要类似大型运算的领域里,GPU同样可以胜任,因此便有了GPU用于并行计算的概念。但与NVIDIA力推GPU最为重要或Intel坚持CPU更重要不同,AMD认为CPU和GPU同样重要。AMD认为,GPU可用于大型运算,而CPU则继续负责传统的串行运算。只有两个配件相互配合,发挥自己的优势,才是最优化的平台,这也是AMD的“Fusion”理念。通过ATI Stream这项技术,AMD可以让GPU和CPU联合起来进行通用计算,大大提高计算机的速度。
GPU相对CPU具有着两方面的特性,一是具备庞大的并行运算能力,任务越复杂,越能体现其运算优势;另一个特性是因为GPU的并行能力,所以其编程环境和开发方法与CPU相比要有所不同。
AMD意识到GPU的强大运算潜力并不一定只该应用在图形处理领域,在其他需要进行类似运算的领域里,GPU同样可以发挥作用。AMD认为,让CPU充当一个指令翻译或是将任务分解为很多小任务的工作,然后将这些任务交给GPU来运算,这会大大提高运算速度。于是有了Fusion的融合理念。
相比CUDA需要独立的编程环境来针对GPU编程,ATI的ATI Stream SDK则是开放的。也就是说,通过后面第三方开发的接口程序,用户甚至可以直接让CPU充当翻译的工作,只需要像以往一样编程,也可以调用GPU来做大规模运算。
这个Fusion这个理念里,我们不会看到GPU取代CPU的想法,也不会看到CPU仍然把持主要计算,而让GPU充当协处理器。实际上,GPU在某种程度上与CPU站在了一起,CPU和GPU真正融合,互相发挥长处,弥补不足,发挥更大性能。
AMD显卡驱动中自带的ATI Video Converter便是基于Stream技术的视频转码软件,ATI Video Converter并非一个完全基于GPU转码的软件,而是CPU+GPU联合转码。它能够让AMD GPU与CPU共同加速,来一起完成以往仅有CPU参与的视频压缩,大大减少压缩时间。与支持NVIDIA CUDA技术的Badaboom视频压缩软件相比,ATI Video Converter拥有更好的转换效率,并支持更多的格式,最重要的是ATI AVIVO是免费的,而Badaboom是收费的。
在视频转换的速度上,ATI Video Converter确实比Badaboom更快。转换同一个视频,HD 4870的电脑采用AVIVO仅需48秒就转换完成,而GTX 280采用Badaboom则需要114秒。当然,速度不是唯一的标准,质量更为重要,ATI Video Converter的压缩质量还比不上Badaboom,这点仍需要改进。
不过需要注意的是:ATI Video Converter并非调用显卡中的流处理器来进行转码,而是调用UVD引擎进行视频转码。因此不同档次的ATI显卡在使用ATI Video Converter转码时,能力是一样的。而Badaboom是调用nVIDIA显卡的CUDA单元(流处理器)参与转码,CUDA单元多的显卡转码就会更快。
除了驱动自带的ATI Video Converter之外,CyberLink公司的威力导演系列软件,魅力四射系列软件、ArcSoft TotalMedia公司的Theater软件等均支持ATI Stream技术。
nVIDIA公司非常成功的将PhysX物理引擎,通过CUDA技术与Geforce显卡相结合,诞生了nVIDIA PhysX物理加速技术。为了与之竞争,AMD推出了基于ATI Stream的“开放物理计划”与之抗衡。开放物理计划联合了Havok、Bullet和Pixelux DMM三种物理引擎,基于OpenCL标准和ATI Stream技术,将AMD GPU中强大的并行计算能力运用到游戏中去加速物理计算。同时开放物理计划也贯彻了Fusion理念,由CPU+GPU联合进行物理计算,GPU负责柔性材料模拟、流体模拟、爆炸模拟等大计算量的物理模拟计算。
开放物理计划尚没有游戏支持,但是已经不断有新的DEMO在各个场合进行展出。
ATI与斯坦福大学合作,在Folding@Home研究项目中利用ATI Radeon X1900作运算加速。这是GPU第一次用于科学研究计算。在AMD收购ATI之后,双方继续进行合作。迄今为止,全球有不计其数的AMD GPU正在基于Stream技术折叠蛋白质,以帮助科学家攻克人类疾病。
同时,ATI Stream技术在石油勘探,地震研究等方面也有很多应用。中国超级计算机“天河一号”便使用了2560块4870x2显卡做并行计算处理器,这同样是基于Stream实现的。
Brown Deer技术公司是一个通过地动波来勘测石油天然气的公司。在用到ATI Stream技术以后,该公司发现其地动波的实时运算比用CPU快了120多倍。而同样,在中国高性能计算年会上获得第二名的中国科学院的研究生用ATI Stream技术在HD 4870显卡上计算中型到大型规模的矩阵,在迭代次数达到3000以上的时候比CPU提升了至少27倍的效率。
Excel2010、PowerPoint2010、Internet Explorer 9、Adobe Flash 10.1等软件均加入了对ATI Stream技术的支持。